home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / misc / ispell-3.001 / ispell-3~ / ispell-3.1 / Contributors < prev    next >
Text File  |  1995-10-12  |  16KB  |  491 lines

  1. Ispell has a long and convoluted history.  I have tried to track down
  2. as much as possible about it and condense it below.
  3.  
  4. THE DEVELOPMENT OF SPELL-CHECKING AND THE FIRST ISPELL
  5.  
  6. The following background information on spelling checkers in general,
  7. and ispell in particular, was provided to me by Les Earnest
  8. (les@dec-lite.stanford.edu):
  9.  
  10. > The earliest spelling checker (of sorts) of which I am aware was in a
  11. > program that attempted to automatically receive human-keyed Morse
  12. > code, which can be ambiguous because of the variable timing between
  13. > dots, dashes, intercharacter pauses, and interword pauses.  This
  14. > program didn't use a full dictionary; instead, used a table of
  15. > digraphs (two-letter sequences) that occur in English and barred
  16. > improper letter sequences.  This program was written by someone at MIT
  17. > Lincoln Lab around 1959 and, I think, ran on the TX-2 computer there.
  18. > Unfortunately, I don't remember his name.  I might still have the
  19. > paper he wrote in my files but it would take a major search to find it
  20. > and I might not succeed.
  21. >
  22. > A program that I wrote in 1961 to read cursive writing contained a
  23. > real spelling checker, using the 10,000 most common English words.
  24. > It is reported in:
  25. >   L. Earnest, "Machine Recognition of Cursive Writing," Information
  26. >   Processing 62, (Proc. IFIP Congress 1962, Munich), North-Holland,
  27. >   Amsterdam, 1963.
  28. > and
  29. >   N. Lindgren, ``Machine Recognition of Human Language, Part III -
  30. >   Cursive Script Recognition'', IEEE Spectrum, May 1965.
  31. >
  32. > I brought that dictionary to Stanford and got a PhD student to write
  33. > a spelling checker for text in Lisp running on our PDP-6 computer at
  34. > the Stanford Artificial Intelligence Lab around 1967.
  35. > Unfortunately, I do not remember which student it was; it could have
  36. > been Gil Falk.  It was a rather simple program (certainly much
  37. > simpler than the earlier cursive writing program) and I didn't think
  38. > of it as a significant development at the time.
  39. >
  40. > [Later], I got another PhD student, Ralph Gorin, to do a better and
  41. > faster spelling checker sometime in the early '70s, still using my
  42. > old dictionary.  Ralph later wrote an article about it in CACM.  I
  43. > believe that he later augmented the dictionary.
  44.  
  45. [note: Ralph has since informed me that he wrote no such article.  The
  46. program was called SPELL and was written in 1971.  Ralph provided me
  47. with a reference to "Computer Programs for Spelling Correction", by
  48. James L. Peterson, Springer-Verlag, Berlin, 1980, No. 96 in the series
  49. "Lecture Notes in Computer Science."  This book states that Ralph's
  50. SPELL program, which was the direct ancestor of ispell, was the first
  51. computer program written for checking the spelling of text documents.
  52. The book is also a good source of references on spelling programs.]
  53.  
  54. > ...
  55. >    
  56. > [Ispell] was originally written in PDP-10 assembly language and ran
  57. > under the WAITS operating system, which is similar to TOPS-10 but existed
  58. > only on SAIL (a dual processor KA10/PDP-6 system).  It was and is called
  59. > SPELL on that machine.  It later was modified to run under Tenex and
  60. > TOPS-20.
  61.  
  62. [Ralph mentions that SPELL was also ported to MIT's ITS and TOPS-10.]
  63.    
  64. The Tenex version of ispell was later revised by W. E. Matson (1974),
  65. and Bill Ackerman (1978).  Bill has provided the following information:
  66.  
  67. > I came across the SPELL program in 1978 on ITS.  It was a port from
  68. > Stanford, and had the names Ralph Gorin (approximately 1971) and
  69. > Wayne Matson (1974) associated with it.  I did 3 things to it:
  70. >
  71. >    Rewrote it as a native program for ITS, and, shortly thereafter,
  72. >       TOPS-20.  (I never did anything for TOPS-10, and am not aware
  73. >       that it ever ran on TOPS-10, though it may have.)
  74. >
  75. >    Replaced the heuristics for suffix removal, which I found unreliable
  76. >       and unsatisfactory, with an algorithm that was driven by specific
  77. >       suffix flags in the dictionary.  This way, the dictionary would have
  78. >       complete control over what words were legal, and there would be no
  79. >       spurious hits.
  80. >
  81. >    Apparently most importantly, though I had no idea at time, gave it
  82. >       the name "ISPELL", for "ITS version of spell", since I didn't
  83. >       consider myself authorized to throw away an existing program
  84. >       and overwrite it with a new one under the same name.
  85. >
  86. > I have not followed the history of the program since then, and do not know
  87. > if it still uses the "suffix flags" in its dictionary.  But if it does,
  88. > I introduced them.  The Ispell algorithm that uses those flags to make
  89. > accurate decisions about the legality of words was documented in great
  90. > detail in James Peterson's Springer-Verlag book.  (He spent a semester
  91. > at MIT while working on the book, and I provided him with a lot of
  92. > information and documentation at that time.)
  93. >
  94. >                            Bill Ackerman
  95. >                            wba@apollo.hp.com
  96.  
  97. Michael Adler adds:
  98.  
  99. > I did work on ispell in 1982.  Actually, I stole the ispell
  100. > dictionary and suffix compression algorithm and wrote a spelling
  101. > checker for CP/M in 8080 assembler that I very creatively called "SPELL."
  102. > By sorting the dictionary alphabetically and using a difference encoding
  103. > I managed to pack the entire dictionary that Bill was using in about
  104. > 56Kb.  The CP/M program read a document, sorted all the words alphabetically
  105. > and then checked them.  It then reread the document and compared words as
  106. > it found them against the in memory, sorted and checked words.  SPELL was
  107. > around in the public domain on CP/M.
  108. >
  109. > I was in high school at the time and talked to Bill only over email.
  110. > We wound up in the same compiler group at Apollo in the late 80's by
  111. > coincidence.
  112.  
  113. DEVELOPMENT OF THE C/UNIX VERSION OF ISPELL
  114.  
  115. In 1983, Pace Willisson (pace@prep.ai.mit.edu) wrote a C/Unix version
  116. from scratch, based on the ispell documentation.
  117.  
  118. In 1987, Walt Buehring revised and enhanced ispell, and posted it to the
  119. Usenet along with a dictionary.  In addition, Walt wrote the first version
  120. of "ispell.el", the emacs interface.
  121.  
  122. Geoff Kuenning (geoff@ITcorp.com, that's me, and by the way I
  123. pronounce it "Kenning"; the "u" is silent) picked up this version,
  124. fixed some bugs, and added further enhancements, all of which made me
  125. the de-facto ispell maintainer for the net.  I also put quite a bit of
  126. work into improving the quality of the dictionaries.  In 1987 I began
  127. work on the "munchlist" script, which I originally intended to be used
  128. to add flags to personal dictionary entries.  At the same time I was
  129. studying German, and wanted to use ispell to check the papers I was
  130. writing for that class.  After thinking about it for some time, I
  131. realized that the suffix flags could be table-driven, which would both
  132. add flexibility and would get rid of certain difficult-to-find bugs.
  133. In 1988 I rewrote major portions of the code to do this, resulting in
  134. the first multi-lingual version.  Ole Bjoern Hessen (obh@ifi.uio.no)
  135. in Norway alpha-tested this version and provided several important
  136. enhancements.
  137.  
  138. Bob Devine (vianet!devine) provided two larger dictionaries (which
  139. became the basis for english.1 and english.2) to me for inclusion
  140. with subsequent releases.
  141.  
  142. Ashwin Ram (ram@cs.yale.edu) made substantial enhancements to Walt
  143. Buehring's emacs interface, and provided them to me for inclusion
  144. with an earlier release.
  145.  
  146. The emacs interface was then completely overhauled by Ken Stevens
  147. (stevens@hplabs.hp.com), who also beta-tested the software and
  148. without whom this posting would not have been possible.  If there's a
  149. feature in the emacs interface that you like, you probably have Ken to
  150. thank for it.  His efforts have been tireless for many years.
  151.  
  152. Martin Boyer made major contributions to the munchlist script,
  153. including producing a version that runs under perl (see
  154. languages/Where for instructions on how to get that version).
  155. Philippe-Andre Prindeville provided xspell (a Motif-based X
  156. interface), and Moritz Willers provided a NeXTStep interface.
  157.  
  158. DEVELOPMENT AND DEATH OF ISPELL 4.0
  159.  
  160. Meanwhile, and unbeknownst to me, Pace Willisson was working on his
  161. own improvements to ispell.  He focused primarily on dictionary size
  162. and startup time.  His solution was a dictionary compression algorithm
  163. that detected and encoded frequent letter pairs.  This also reduced
  164. the time needed to read it in.  Pace also changed some internal data
  165. structures to improve startup time.  Pace and I eventually discovered
  166. each other's efforts, and discussed re-merging our changes, but we
  167. decided that there would be too much work involved.  This was partly
  168. because I was close to a release and didn't want to delay it with an
  169. extensive and error-prone merge.
  170.  
  171. In late 1992 (if my memory serves correctly), Richard Stallman
  172. contacted me, asking for permission to distribute ispell as part of
  173. the GNU suite.  I responded that he was welcome to distribute it, but
  174. that I was not willing to place my software under the Gnu Public
  175. License.  Through a misunderstanding, neither of us considered the
  176. possibility of finding a compromise license that both could live with.
  177. So Richard started a search for an alternate version, and found Pace
  178. working right in his back yard.
  179.  
  180. I have been told that when FSF first learned of Pace's version, they
  181. again considered using International Ispell instead because it was
  182. both more popular and more capable, but this idea was rejected due to
  183. the license misunderstanding.  Instead, FSF enhanced Pace's version
  184. somewhat and called it ispell 4.0, apparently in the hopes that by
  185. numbering the version higher, it would become the standard.
  186.  
  187. When ispell 4.0 was released, much confusion ensued.  Many ispell
  188. users innocently "upgraded" to 4.0 and then screamed when they could
  189. not find features to which they had grown accustomed.  Europeans in
  190. general were angered by the apparent provincialism shown by the
  191. "dropping" of international support.  I found myself inundated with
  192. questions about a version I had never heard of or seen.
  193.  
  194. One of the earliest and most common suggestions was that FSF should
  195. rename their version "gispell".  This had a lot of precedent, both in
  196. the naming of other FSF utilities and in the then-recent change of the
  197. suffix used by gzip from ".z" to ".gz".  Unfortunately, the FSF
  198. refused to do this.  I may have inadvertently contributed to this
  199. refusal with a Usenet posting in which I tried to clarify what had
  200. happened, pointing out that the FSF version was more recently related
  201. to Pace's than my own.  This may have been seen as an acknowledgment
  202. that FSF should have the rights to the name "ispell," and that I
  203. should rename my version.
  204.  
  205. A flame war arose, and I decided that the only way to solve the
  206. problem was to rename my version to eliminate the confusion.  However,
  207. at about the same time Richard Stallman and I began negotiating via
  208. e-mail.  We itemized and clarified his objections to my license, and I
  209. learned from a third party that FSF is willing to distribute software
  210. that falls under the University of California license (also known as
  211. the Berkeley license).  Richard and I agreed that if I changed my
  212. license to be a paraphrase of the UC license, FSF would be willing to
  213. distribute my version with no changes.  Since then, ispell 4.0 has
  214. been dropped by FSF and has pretty well disappeared from the net,
  215. leaving 3.1 as the version of choice for nearly everyone.
  216.  
  217. OTHER CONTRIBUTORS
  218.  
  219. Many other enhancements and bug fixes were provided by the numerous
  220. people listed below.  Do not assume, because I omit mention of their
  221. specific contributions, that these persons were any less instrumental
  222. in creating the version of ispell that you see before you.  Every one
  223. of them made a significant contribution, and it is only a lack of
  224. space that prevents me from detailing these contributions.  This
  225. version of ispell is truly a cooperative effort, and it would not
  226. exist without the help of the generous souls listed above and below.
  227.  
  228. A full list of contributors, including those mentioned above, follows.  (I
  229. think I have listed everyone, but if you contributed and aren't listed,
  230. let me know and I'll correct it):
  231.  
  232.     Ivar Aavatsmark
  233.     Per Abrahamsen
  234.     Robert Abramovitz
  235.     Bill Ackerman
  236.     Michael Adler
  237.     Rohit Aggarwal
  238.     Jose Joao Almeida
  239.     Jerry Anders
  240.     Boris Aronov
  241.     Yves Arrouye
  242.     Jamshid Afshar
  243.     Michael C. B. Ashley
  244.     Bertil Askelid
  245.     Eric Backus
  246.     Isaac Balbin
  247.     Neal Becker
  248.     Tony Bennett
  249.     R. Bernstein
  250.     Jim Berry
  251.     Peter A. Bigot
  252.     E. Jay Berkenbilt
  253.     Benno Blumenthal
  254.     Uwe Bonnes
  255.     Marc Boucher
  256.     Martin Boyer
  257.     Ethan Bradford
  258.     David Brooks
  259.     Nicolas Brouard
  260.     Peter Bruells
  261.     Ferd Brundick
  262.     Jack Bryans
  263.     Walt Buehring
  264.     Richard Caley
  265.     John D. Campbell
  266.     Keith Cantrell
  267.     John Capo
  268.     Bill Carpenter
  269.     Jesus Carretero
  270.     Michael W. Chang
  271.     Steven Chaplin
  272.     Wei-Jou Chen
  273.     Peter Chubb
  274.     Stewart Clamen
  275.     Henri Cohen
  276.     Ken Cox
  277.     Robert Crowe
  278.     Damian Cugley
  279.     Ian Dall
  280.     Kevin Dalley
  281.     David Dalton
  282.     Neal Dalton
  283.     Hugh Daniel
  284.     Mark Davies
  285.     Frederic Devernay
  286.     Bob Devine
  287.     Paul Dickson
  288.     Casper H.S. Dik
  289.     Detlev Droege
  290.     Steve Dum
  291.     Alexander Durner
  292.     Jiri Dvorak
  293.     Les Earnest
  294.     John Eaton
  295.     David Edelsohn
  296.     Jeff Edmonds
  297.     Eric Eide
  298.     Orjan Ekeberg
  299.     Kevin Ellwood
  300.     Michael Ernst
  301.     L. Van Eycken
  302.     Rik Faith
  303.     Ralf Fassel
  304.     George Ferguson
  305.     Jeff Finger
  306.     Werner Fink
  307.     John Fitch
  308.     Peter Flatau
  309.     Jeffrey Friedl
  310.     Georg Gieseke
  311.     Ralph. E. Gorin
  312.     Amos A. Gouaux
  313.     Andy Gruss
  314.     Michael Gschwind
  315.     Ron Guilmette
  316.     Bhusan Gupta
  317.     Michael A. Guravage
  318.     Chris Hadley
  319.     Mark Hanning-Lee
  320.     John Heidemann
  321.     Arne Helme
  322.     Ole Bjoern Hessen
  323.     Karl Heuer
  324.     Juergen A. Holm
  325.     Denis Howe
  326.     Joe Huber
  327.     Brian Hunt
  328.     imt3b2!imtsft (true name unknown)
  329.     Lester Ingber
  330.     Nick Ing-Simmons
  331.     Richard L. Jackson, Jr.
  332.     Michal Jaegermann
  333.     John Jendro
  334.     Bob Jewett
  335.     Trevor Jim
  336.     Gary Johnson
  337.     Gjalt de Jong
  338.     Don Kark
  339.     Dan Karron
  340.     Brendan Kehoe
  341.     Steve Kelem
  342.     Vivek Khera
  343.     Axel Kielhorn
  344.     Masahiro Kitagawa
  345.     Peter Knaggs
  346.     Don Knuth
  347.     Jim Knutson
  348.     Heinz Knutzen
  349.     Fred Korz
  350.     Sebastian Kremer
  351.     Geoff Kuenning
  352.     Ralf Lammers
  353.     Markus Lautenbacher
  354.     Jack Lawler
  355.     Cherie N. Lawrence
  356.     Charles Levert
  357.     Doug Lind
  358.     Torbjoern Lindgren
  359.     Michael N. Lipp
  360.     Ernst Lippe
  361.     Richard Lloyd
  362.     John Lu
  363.     Dean Luick
  364.     Erik Luijten
  365.     Ian MacPhedran
  366.     Martin Maechler
  367.     Ross Maloney
  368.     Albrecht Melan
  369.     Lee Melvin
  370.     Evan Marcus
  371.     Simon Marshall
  372.     Dave Mason
  373.     W. E. Matson
  374.     Meinhard E. Mayer
  375.     Rob McMahon
  376.     Bob McQueer
  377.     Dean Messing
  378.     Chris Metcalf
  379.     Jim Meyering
  380.     Hal Miller
  381.     N.O. Monaghan
  382.     Chris Moore
  383.     Bernd Mueller
  384.     Ulrich Mueller
  385.     Guido Muesch
  386.     John Murdie
  387.     Peter Mutsaers
  388.     Erik Toubro Nielsen
  389.     Gaute Nessan
  390.     Keith Neufeld
  391.     Paul Nevai
  392.     David Neves
  393.     Mike Ogush
  394.     Thorstein Ohl
  395.     Piet van Oostrum
  396.     Joe Orost
  397.     Pham Dinh-Tuan
  398.     Gildas Perrot
  399.     Francois Pinard
  400.     Israel Pinkas
  401.     Paul Placeway
  402.     Mick Pont
  403.     Jim Prescott
  404.     Philippe-Andre Prindeville
  405.     Gary Puckering
  406.     Philippe Queinnec
  407.     Ashwin Ram
  408.     Bill Randle
  409.     Christopher Rath
  410.     Joachim Reinert
  411.     Rob Riepel
  412.     Marc Ries
  413.     Loren J. Rittle
  414.     Germic Robert
  415.     Philippe Robert
  416.     Doug Roberts
  417.     Kevin Rodgers
  418.     Santiago Rodriguez
  419.     Hagen Ross
  420.     Jonathan Ross
  421.     Arie Rudich
  422.     Jonathan Ryshpan
  423.     Bruno Salvy
  424.     Rich Salz
  425.     Julio Sanchez
  426.     Paul A. Sand
  427.     Ken Scales
  428.     Bart Schaefer
  429.     Greg Schaffer
  430.     Harald Schlangmann
  431.     Joachim Schrod
  432.     Vernon Schryver
  433.     Martin Schulz
  434.     Gregory Neil Shapiro
  435.     Guy Shaw
  436.     David Shepherd
  437.     Tom Shott
  438.     Joel Shprentz
  439.     Duncan Sinclair
  440.     Vivek P. Singhal
  441.     Klaus Singvogel
  442.     George M. Sipe
  443.     David M. Smith
  444.     Perry Smith
  445.     Luis Soltero
  446.     David Spuler
  447.     Richard Stallman
  448.     Kevin B. Stanton
  449.     Kjartan Stefansson
  450.     Ken Stevens
  451.     Andreas Stolcke
  452.     Thos Sumner
  453.     Bob Sutterfield
  454.     Stefan Taxhet
  455.     Gruppe Thi
  456.     Julian Thompson
  457.     Thomas Tornblom
  458.     Michael Toy
  459.     Bill Triggs
  460.     Goeran (G\366ran) Uddeborg
  461.     Marc Ullman
  462.     Koaunghi Un
  463.     Arjan de Vet
  464.     Andrew Vignaux
  465.     Christoph Vogelsang
  466.     Jochen Voss
  467.     David Waitzman
  468.     Peter Watkins
  469.     Gray Watson
  470.     Patrick Weemeeuw
  471.     Edward Welbourne
  472.     Petri Wessman
  473.     Michael Wester
  474.     Peter Whaite
  475.     Jon L. White
  476.     Johan Widen
  477.     Fredrik Wilhelmsen
  478.     Moritz Willers
  479.     Pace Willisson
  480.     Joerg Winckler
  481.     Bill Wohler
  482.     Michael J. Wolski
  483.     James Woods
  484.     Frank Wuebbeling
  485.     Avishai Yacobi
  486.     Ken Yap
  487.     Benny Yih
  488.     Peter Young
  489.     Jamie Zawinski
  490.     Christos S. Zoulas
  491.